检测和循环

  C++提供了一组很方便的用于表示选择和循环的语句。举例来说,这里是一个简单的函数,它提示用户输入,并返回一个布尔值代表这个输入:

    bool accept()
    {
        cout << "Do you want to proceed(y or n)?\n";    // 写出提问
        char answer = 0;
        cin >> answer;                                  // 读回答
        if(answer == 'y') return true;
        return false;
    }

运算符 << (“送出”)用做输出运算符;cout 是标准输出流。运算符 >> ("取出")用做输入运算符;cin 是标准输入流。>> 的右运算对象的类型确定能接受什么样的输入,它也作为输入操作的目标。在输出字符串最后的 \n 字符表示换行。

  通过将回答 'n' 也纳入考虑的范围,可以对这个例子做一点改进:

    bool accepts()
    {
        cout << "Do you want to proceed(y or n)?\n";    // 写出提问
        char answer = 0;
        cin >> answer;                                  // 读回答

        switch(answer)
        {
            case 'y':
                return true;
            case 'n':
                return false;
            default:
                cout << "I'll take that for a no.\n";
                return false;
        }
    }

这里的 switch 语句对照一组常量检查一个值,这些分情况常量必须互不相同。而如果这个值与所有常量都不匹配,那么就选择 default。程序员可以不提供 default

  很少有程序里不包含循环。对于目前情况,我们可能希望允许用户试几次:

    bool accept3()
    {
        int tries = 1;
        while(tries < 4)
        {
            cout << "Do you want to proceed(y or n)?\n";    // 写出提问
            char answer = 0;
            cin >> answer;

            switch(answer)
            {
                case 'y':
                    return true;
                case 'n':
                    return false;
                default:
                    cout << "Sorry, I don't understand that.\n";
                    tries = tries + 1;
            }
        }

        cout << "I'll take that for a no.\n";
        return false;
    }

这里的 while 语句一直执行到条件变成false为止。

🔚